package com.ryder.subject.domain.service;

import com.ryder.subject.domain.entity.SubjectCategoryBO;

import java.util.List;
import java.util.concurrent.ExecutionException;

/**
 * 描述: 岗位分类领域服务
 *
 * @author Ryder
 * @version 1.0
 * @date 2025/02/03
 * @since 1.0 // 版本号，指明从哪个版本开始
 */
public interface SubjectCategoryDomainService {

    /**
     * 添加岗位分类
     *
     * @param subjectCategoryBO 需要添加的岗位分类数据对象
     */
    void add(SubjectCategoryBO subjectCategoryBO);

    /**
     * 查询岗位大类下分类
     *
     * @param subjectCategoryBO 查询条件
     * @return List<SubjectCategoryBO>
     */
    List<SubjectCategoryBO> queryCategory(SubjectCategoryBO subjectCategoryBO);

    /**
     * 更新岗位分类
     *
     * @param subjectCategoryBO 需要更新的岗位分类数据对象
     * @return Boolean
     */
    Boolean update(SubjectCategoryBO subjectCategoryBO);

    /**
     * 删除岗位分类
     *
     * @param id 需要删除的岗位分类数据对象id
     * @return Boolean
     */
    Boolean delete(Long id);

    /**
     * 查询岗位分类和标签
     *
     * @param subjectCategoryBO 查询条件
     * @return List<SubjectCategoryBO>
     */
    List<SubjectCategoryBO> queryCategoryAndLabel(SubjectCategoryBO subjectCategoryBO) throws ExecutionException, InterruptedException;
}
